| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import { NextRequest, NextResponse } from "next/server";
- import { PrismaClient } from "@prisma/client";
- const prisma = new PrismaClient();
- export const GET = async (
- req: NextRequest,
- { params }: { params: { id: string } }
- ) => {
- try {
- const file = await prisma.file.findUnique({
- where: { id: params.id },
- });
- if (!file) {
- const response = NextResponse.json(
- { error: "File not found" },
- { status: 404 }
- );
- response.headers.set('Access-Control-Allow-Origin', '*');
- return response;
- }
- // Return file as downloadable response
- const response = new NextResponse(file.data, {
- headers: {
- "Content-Type": file.mimetype,
- "Content-Disposition": `attachment; filename="${file.filename}"`,
- "Content-Length": file.size.toString(),
- "Access-Control-Allow-Origin": "*",
- },
- });
-
- return response;
- } catch (error) {
- console.error("Error retrieving file:", error);
- const response = NextResponse.json(
- { error: "Failed to retrieve file" },
- { status: 500 }
- );
- response.headers.set('Access-Control-Allow-Origin', '*');
- return response;
- } finally {
- await prisma.$disconnect();
- }
- };
- export const OPTIONS = async () => {
- const response = new NextResponse(null, { status: 200 });
- response.headers.set('Access-Control-Allow-Origin', '*');
- response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
- response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
- return response;
- };
|